package com.plugin.buildsrc.plugin;

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.file.FileCollection;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.SourceSetContainer;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

class MyPlugin implements Plugin<Project> {

    @Override
    public void apply(Project project) {
        System.out.println("插件启动");
        // 在你的 Gradle 项目中使用这个方法来读取文件内容
/*
        project.afterEvaluate(proj -> {
            // 获取源代码集合
            SourceSetContainer sourceSets = (SourceSetContainer) proj.getProperties().get("sourceSets");
            System.out.println(sourceSets.getNames());
            SourceSet mainSourceSet = sourceSets.getByName("main");


            // 获取源代码目录
            FileCollection javaSrcDirs = mainSourceSet.getJava();

            // 找到所有的 Java 源文件
            javaSrcDirs.getFiles().forEach(file -> {
                if (file.isFile() && file.getName().endsWith(".java")) {
                    try {
                        String fileContent = readFileContent(file);

                        // 如果文件包含 onClick 方法，则添加打印逻辑
                        if (fileContent.contains("void onClick(")) {
                            fileContent = fileContent.replace("void onClick(View view) {", "void onClick(View view) {\n" +
                                    "                Toast.makeText(MainActivity2.this, \"plugin\", Toast.LENGTH_SHORT).show();");
//                            fileContent = fileContent.replace("{", "{\nSystem.out.println(\"点击事件触发\");\n");
                            writeFileContent(file, fileContent);
                            System.out.println("已在文件 " + file.getAbsolutePath() + " 中添加打印逻辑");
                        }
                    } catch (IOException e) {
                        System.err.println("处理文件 " + file.getAbsolutePath() + " 时出现错误：" + e.getMessage());
                    }
                }
            });
        });
*/
        ;
    }

    // 读取文件内容的方法
    public String readFileContent(File file) throws IOException {
        StringBuilder contentBuilder = new StringBuilder();
        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = br.readLine()) != null) {
                contentBuilder.append(line).append("\n");
            }
        }
        return contentBuilder.toString();
    }

    // 写入文件内容的方法
    public void writeFileContent(File file, String content) throws IOException {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
            bw.write(content);
        }
    }
}


